/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controladores;

import Beans.Impuesto;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Ethan Amador
 */
public class MImpuesto {
    
    private List<Impuesto> ListImpuestos = new LinkedList<Impuesto>();
    File archivo=new File("Impuesto.dat");
     Impuesto Im = new Impuesto();

    public List<Impuesto> getListImpuestos() {
        return ListImpuestos;
    }

    public void setListImpuestos(List<Impuesto> ListImpuestos) {
        this.ListImpuestos = ListImpuestos;
    }
     
     
     
      public void grabar() throws IOException {
      FileOutputStream   flujoSalida  = new FileOutputStream(archivo);
      ObjectOutputStream objetoSalida = new ObjectOutputStream(flujoSalida);
      objetoSalida.writeObject(this.getListImpuestos());
      objetoSalida.close();
    }

      public void restaurar() throws IOException,ClassNotFoundException {
        if(archivo.exists()==true){
            FileInputStream flujoEntrada    = new FileInputStream(archivo);
  	    ObjectInputStream objetoEntrada = new ObjectInputStream(flujoEntrada);
  	    List<Impuesto> lcl = (List) objetoEntrada.readObject();
            this.setListImpuestos(lcl);
            objetoEntrada.close();
        }
    }
    
      
      //METODOS
      
       public boolean Existe(int cod){
        boolean con=false;
        Iterator itc=ListImpuestos.iterator();
           while(itc.hasNext()){
              Im=(Impuesto)itc.next();
              if(Im.getCodigo()== cod){
                    con=true;
                }
            }
           return con;
        } 
       //VERIFICAR LA EXISTENCIA
       
       public void Registrar(Impuesto im){
         if(!Existe(im.getCodigo())){
             getListImpuestos().add(im);

            try {
                this.grabar();
            } catch (IOException ex) {
                Logger.getLogger(Mproveedor.class.getName()).log(Level.SEVERE, null, ex);
            }
         }
      }
       // REGISTRAR IMPUESTO
       
       public int GenerarCodigo(){
        int codigo=0;
        if(getListImpuestos().size()>=0){
            codigo = getListImpuestos().size()+1;
        }else{
            codigo=0;
        }

        return codigo;

    }
       //GENERAMOS CODIGO
       
        public Impuesto Consultar(int cod){
        Iterator itc=ListImpuestos.iterator();
         while(itc.hasNext()){
            Impuesto imp= (Impuesto)itc.next();
            if(imp.getCodigo()== cod){
               return imp;
            }
         }
         return new Impuesto();
    } 
        //CONSULTAR IMPUESTO
        
        public void Eliminar(int cod){
       try{
            Iterator itc=ListImpuestos.iterator();
            while(itc.hasNext()){
            Im=(Impuesto)itc.next();
            if(Im.getCodigo()==cod){
               getListImpuestos().remove(Im);
                    try {
                        this.grabar();
                    } catch (IOException ex) {
                        Logger.getLogger(Mcliente.class.getName()).log(Level.SEVERE, null, ex);
                    }
               JOptionPane.showMessageDialog(null,"Categoria Eliminada");
            }
        }
       }catch(ConcurrentModificationException e){

       }

    } 
        //ELIMINAR IMPUESTO
        
        public void Modificar(int posi,int cod,Impuesto imp){
        Iterator itc=ListImpuestos.iterator();
         while(itc.hasNext()){
            Im = (Impuesto)itc.next();
            if(Im.getCodigo()==cod){
                this.getListImpuestos().set(posi, imp);
                JOptionPane.showMessageDialog(null,"Los Datos se Guardaron "
                                                 + "Satisfactoriamente");
                try {
                    this.grabar();
                } catch (IOException ex) {
                    Logger.getLogger(MImpuesto.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        } 
        //MODIFICAR IMPUESTO
       
}
